////////////////////////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
//

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные);

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	СписокКонстант.Очистить();
	Для ТекИнд = 0 По Параметры.МассивИменМетаданных.ВГраница() Цикл
		Строка = СписокКонстант.Добавить();
		Строка.ИндексКартинкиАвторегистрация = Параметры.МассивАвторегистрации[ТекИнд];
		Строка.ИндексКартинки                = 2;
		Строка.МетаПолноеИмя                 = Параметры.МассивИменМетаданных[ТекИнд];
		Строка.Наименование                  = Параметры.МассивПредставлений[ТекИнд];
	КонецЦикла;

	ЗаголовокАвторегистрации = НСтр("ru='Авторегистрация для узла ""%1""'");

	Элементы.ДекорацияАвторегистрация.Заголовок = СтрЗаменить(ЗаголовокАвторегистрации, "%1", Параметры.УзелОбмена);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ТекПараметры = УстановитьПараметрыФормы();
	Элементы.СписокКонстант.ТекущаяСтрока = ТекПараметры.ТекущаяСтрока;
КонецПроцедуры

&НаКлиенте
Процедура ПриПовторномОткрытии()
	ТекПараметры = УстановитьПараметрыФормы();
	Элементы.СписокКонстант.ТекущаяСтрока = ТекПараметры.ТекущаяСтрока;
КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ СписокКонстант
//

&НаКлиенте
Процедура СписокКонстантВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ПроизвестиВыборКонстанты();
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОМАНД ФОРМЫ
//

// Производит выбор константы
//
&НаКлиенте
Процедура ВыбратьКонстанту(Команда)
	ПроизвестиВыборКонстанты();
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
//

// Производит выбор и оповещает о нем
//
&НаКлиенте
Процедура ПроизвестиВыборКонстанты()
	Данные = Новый Массив;
	Для Каждого ТекЭл Из Элементы.СписокКонстант.ВыделенныеСтроки Цикл
		ТекСтрока = СписокКонстант.НайтиПоИдентификатору(ТекЭл);
		Данные.Добавить(ТекСтрока.МетаПолноеИмя);
	КонецЦикла;
	ОповеститьОВыборе(Данные);
КонецПроцедуры

&НаСервере
Функция УстановитьПараметрыФормы()
	Результат = Новый Структура("ТекущаяСтрока");
	Если Параметры.НачальноеЗначениеВыбора <> Неопределено Тогда
		Результат.ТекущаяСтрока = ИдентификаторСтрокиПоМетаИмени(Параметры.НачальноеЗначениеВыбора);
	КонецЕсли;
	Возврат Результат;
КонецФункции

&НаСервере
Функция ИдентификаторСтрокиПоМетаИмени(ПолноеИмяМетаданных)
	Данные = РеквизитФормыВЗначение("СписокКонстант");
	ТекСтрока = Данные.Найти(ПолноеИмяМетаданных, "МетаПолноеИмя");
	Если ТекСтрока <> Неопределено Тогда
		Возврат ТекСтрока.ПолучитьИдентификатор();
	КонецЕсли;
	Возврат Неопределено;
КонецФункции